package AgendaMultitudo;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class TestContato {
	private Contato contato;
	private Contato contato1;
	private Contato contato2;
	
	@Before public void criaContato() throws Exception{
		contato1 = new Contato("Joao","Rodrigues Alves - 51","10/10/2010","joao@msn.com","joao.skype","8888-8888");
		contato2 = new Contato("Pedro","FlorianoPeixoto - 35","15/10/1990","pedro@msn.com", "pedro.skype","9999-9999");
	}
	
	@Test 
	public void testaContatos(){
		Assert.assertEquals("Nome Errado", "Joao", contato1.getNome());
		Assert.assertEquals("Endereco Errado","Rodrigues Alves - 51", contato1.getEndereco());
		Assert.assertEquals("Aniversario Errado","10/10/2010", contato1.getDataAniversario());
		Assert.assertEquals("Email Errado","joao@msn.com", contato1.getEmail());
		Assert.assertEquals("Skype Errado","joao.skype", contato1.getSkype());
		Assert.assertEquals("Telefone Errado","8888-8888", contato1.getTelefone());
	}
	
	@Test 
	public void testeErrosNoConstrutor(){
		
		//Nome nulo ou vazio
		try{
			contato = new Contato(null,"Rodrigues Alves - 51","10/10/2010","joao@msn.com","joao.skype","8888-8888");
		}
		catch(Exception e){
			Assert.assertEquals("Nome nao pode ser vazio ou nulo.","Nome nao pode ser nulo.",e.getMessage());
		}

		//Endereco nulo ou vazio
		try{
			contato = new Contato("Joao",null,"10/10/2010","joao@msn.com","joao.skype","8888-8888");
		}
		catch(Exception e){
			Assert.assertEquals("Endereco nao pode ser vazio ou nulo.","Endereco nao pode ser nulo.",e.getMessage());
		}
	
		//Data de Aniversario nula ou vazia
		try{
			contato = new Contato("Joao","Rodrigues Alves - 51",null,"joao@msn.com","joao.skype","8888-8888");
		}
		catch(Exception e){
			Assert.assertEquals("Data de aniversario nao pode ser vazia ou nula.","Data de aniversario nao pode ser nula.",e.getMessage());
		}

	}

	@Test 
	public void testEquals() throws Exception{
		Assert.assertTrue(!contato1.equals(null));
		Assert.assertEquals(contato1,contato1);
		Assert.assertEquals(new Contato("Joao","Rodrigues Alves - 51","10/10/2010","joao@msn.com","joao.skype","8888-8888"),contato1);
		Assert.assertTrue(!contato1.equals(contato2));

	}
	
	@Test
	public void testeToString(){
		Assert.assertTrue(contato1.toString().equals("Nome: "+contato1.getNome()+", Endereco: "+contato1.getEndereco()+", Data de aniversario: "+contato1.getDataAniversario()));
	}
}
